Given a balanced parentheses string s
, return the score of the string.
The score of a balanced parentheses string is based on the following rule:
"()"
has score1
.AB
has scoreA + B
, whereA
andB
are balanced parentheses strings.(A)
has score2 * A
, whereA
is a balanced parentheses string.
Input: s = "()" Output: 1
Input: s = "(())" Output: 2
Input: s = "()()" Output: 2
2 <= s.length <= 50
s
consists of only'('
and')'
.s
is a balanced parentheses string.
implSolution{pubfnscore_of_parentheses(s:String) -> i32{letmut stack = vec![];for c in s.chars(){if c == '('{ stack.push(0);}else{match stack.pop().unwrap(){0 => stack.push(1), x => *stack.last_mut().unwrap() = 2* x,}if stack.len() > 1 && stack[stack.len() - 2] > 0{let x = stack.pop().unwrap();*stack.last_mut().unwrap() += x;}}} stack[0]}}